package com.zhdl.modules.prefiresys.task;

import com.zhdl.modules.prefiresys.service.FactoryWeeklyRiskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 每日计算数据
 */
@Slf4j
@Component
public class DayCalcData {

    private final FactoryWeeklyRiskService ago7DayRiskTrendService;

    @Autowired
    public DayCalcData(FactoryWeeklyRiskService ago7DayRiskTrendService) {
        this.ago7DayRiskTrendService = ago7DayRiskTrendService;
    }

    // fixedRate 表示固定的时间间隔（以毫秒为单位）触发任务的执行。换句话说，fixedRate=5000 则表示任务每 5 秒执行一次。无论当前任务是否已经完成，当周期性地执行下一个任务时，它将始终按照指定的间隔时间启动。
    // fixedDelay 表示上一次任务执行完成后延迟一段时间再启动下一次任务（以毫秒为单位）。例如，fixedDelay=5000 则表示任务开始执行后等待 5 秒，然后启动下一次任务。这意味着无论上一个任务执行时间长度是多长，都会等待该时间长度的间隔后再启动下一个任务。
    @Scheduled(cron = "0 0 6 * * ?") // 每天早上6点整执行一次
//    @Scheduled(fixedRate = 1000)
    public void scheduledTask() {
        log.debug("定时任务 业务计算数据");
        // 计算每日报警数量
        ago7DayRiskTrendService.countAgoWeekAlarmData();
        ago7DayRiskTrendService.countLocalHostAlarmData();
    }
}
